#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>


struct msgbuf
{
	long mtype;
	char mtext[50];
};


int main()
{
	key_t key = 0;
	int msgid = 0;
	int ret = 0;

	key = ftok("/home/hua/yanfa15/",1);
	if(key == -1)
	{
		perror("ftok");
		exit(-1);
	}


	msgid = msgget(key,IPC_CREAT|0666);
	if(msgid == -1)
	{
		perror("msgget");
		exit(-1);
	}

	struct msgbuf data;
	memset(&data,0,sizeof(data));

	ret = msgrcv(msgid,&data,sizeof(struct msgbuf) - sizeof(long),1,0);
	if(ret == -1)
	{
		perror("msgrcv");
		exit(-1);
	}

	printf("msg is %s\n",data.mtext);


	struct msgbuf msg;
	memset(&msg,0,sizeof(struct msgbuf));
	msg.mtype = 2;
	strcpy(msg.mtext,"dajiahao");

	ret = msgsnd(msgid,&msg,sizeof(struct msgbuf) - sizeof(long),0);
	if(ret == -1)
	{
		perror("msgsnd");
		exit(-1);
	}


	ret = msgctl(msgid,IPC_RMID,NULL);
	if(ret == -1)
	{
		perror("msgctl");
		exit(-1);
	}


	return 0;
}
